from python_baway.common.xcommon import sep


# 1．创建类Book，完成如下任务：（共15分）
class Book(object):

    # （1）添加类属性，language，书籍的语言，默认值“语言：中文”。（1分）
    language = '语言：中文'

    # （2）添加类方法，showLanguage，输出类属性language的值到终端；（2分）
    @classmethod
    def showLanguage(cls):
        print(cls.language)

    # （3）添加静态方法：bookNotice：（1分）4
    # 参数：无
    # 返回值：无
    # 功能描述：
    # 	输出“拒绝盗版，违法必究“ ；
    @staticmethod
    def bookNotice():
        print('拒绝盗版，违法必究')

    # （4）添加构造方法，完成如下功能：
    # ①添加对象属性，bookName，图书名，字符串类型；默认值为空字符串。（1分）5
    # ②添加对象属性，bookAuthor，图书作者，字符串类型；默认值为空字符串；（1分）6
    # ③添加对象属性，bookPrice，图书价格，浮点数类型；默认值为0.0。（1分）7
    def __init__(self, bookName='', bookAuthor='', bookPrice=0.0):
        self.bookName = bookName
        self.bookAuthor = bookAuthor
        self.bookPrice = bookPrice

    # （5）添加对象方法setBookName，用于修改对象属性bookName的值；（2分）
    # ①参数：bName，图书名，字符串类型；
    # ②返回值：无；
    # ③功能介绍：在该方法中，将参数值保存到对象属性bookName中；
    def setBookName(self, bName:str):
        self.bookName = bName

    # （6）添加对象方法setBookPrice，用于修改对象属性bookPrice的值；（2分）
    # ①参数：bPrice，商品价格，浮点数类型；
    # ②返回值：无；
    # ③功能介绍：在该方法中，将参数值保存到对象属性bookPrice中；
    def setBookPrice(self, bPrice:float):
        self.bookPrice = bPrice

    def setBookAuthor(self, bAuthor:str):
        self.bookAuthor = bAuthor

    # （7）添加对象方法informationn，显示图书信息：（4分）15
    # ①参数：无
    # ②返回值：无
    # ③功能描述：在该方法中显示当前图书的全部信息，格式如下：
    # 图书名：？？？
    # 图书价格：？？？
    # 图书作者：？？？
    def information(self):
        print(f'''\
图书名：{self.bookName}
图书价格：{self.bookPrice}
图书作者：{self.bookAuthor}
''')

# 2．	添加主程序入口，完成如下操作：（5分）
if '__main__' == __name__:

    # （1）创建Book对象，mbook。（1分）
    mbook = Book()

    # （2）正确调用对象方法，修改图书名称、图书价格和图书作者；（1分）
    # ①如  “钢铁是怎么炼成的”  100元   小刚
    mbook.setBookName('钢铁是怎么炼成的')
    mbook.setBookPrice(100)
    mbook.setBookAuthor('小刚')

    # （3）调用对象方法，显示图书信息；（1分）
    mbook.information()

    # （4）调用Book类中静态方法和类方法；（1分）
    mbook.bookNotice()
    mbook.showLanguage()

    # （5）修改类属性后，再次显示类属性的值到终端；（1分）
    sep("Book.language = 'Japanese'")
    Book.language = 'Japanese'
    print(Book.language)
    print(mbook.language)
    sep('Create mbook2')
    mbook2 = Book('ABC', 'John', 2.5)
    print(Book.language)
    print(mbook.language)
    print(mbook2.language)
    sep('set mbook2 language to English')
    mbook2.language = 'English'
    print(Book.language)
    print(mbook.language)
    print(mbook2.language)
